home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / adult_ed / weather / weather.doc < prev    next >
Text File  |  1995-05-02  |  8KB  |  158 lines

  1.                            WEATHER.DOC
  2.  
  3.                            Nov 15, 1990
  4.  
  5.                Original BASIC version: Phil Baughn
  6.                   Revised C version: Rod Falanga
  7.  
  8.  
  9.           WEATHER  is  a   program  that  Phil  Baughn  wrote  for
  10.      forecasting the weather as  well  as  to  calculate  the wind
  11.      chill factor, the heat index,  the humidity index and the dew
  12.      point.  Phil wrote the program for the IBM PC and compatibles
  13.      in BASIC.  Others also  assisted  in the creation of WEATHER,
  14.      they  are  Brad James, A.   Blackadar  and  others,  who  are
  15.      mentioned in the source code.
  16.  
  17.           I wanted to have the program on  my  Atari ST, and since
  18.      ST  BASIC's  floating  point calculations are notoriously bad
  19.      and  since  I  don't  have GFA BASIC, I thought  it  best  to
  20.      translate  Phil's most recent copy of WEATHER into C.   After
  21.      approximately  three months, this is the result.  As Phil has
  22.      requested in  his BASIC source code, I now also request that,
  23.      if you should  give this program to anyone else, upload it to
  24.      a BBS or some  other electronic bulletin board system, please
  25.      keep this documentation file with it.  Thank you.
  26.  
  27.           The BASIC version of WEATHER is shareware and any monies
  28.      are to be sent to Phil Baughn for it.  This C version is also
  29.      shareware and I request that if you find it useful, that  you
  30.      send  whatever you  consider  appropriate  to  me  at:    740
  31.      Stallion Rd., SE;  Rio Rancho, NM 87124.
  32.      
  33.           Phil's BBS is The  MAILROOM  RBBS-PC  in  Lexington, KY.
  34.      You may reach it (data) by dialing (606)263-1234.
  35.  
  36.           Included in this archive file are the following:
  37.  
  38.                             WEATHER.C
  39.                             HEATINDX.C
  40.                              DEW_PT.C
  41.                             FORECAST.C
  42.                             HUMIDITY.C
  43.                             WINDCHIL.C
  44.              WEATHER.BAS (the original BASIC version)
  45.         WEATHER.TOS (in the Atari ST related archive only)
  46.                    WEATHER.DOC (this text file)
  47.            MAKEFILE (the Mark Williams C makefile file)
  48.  
  49.           Some  of  the  modules  need  some   explanation.    The 
  50.      HEATINDX, DEW_PT, FORECAST, HUMIDITY and WINDCHIL modules are 
  51.      basically what their names imply.   For the most part, I have 
  52.      left  Phil's  program  design  and  logic  untouched.    Phil 
  53.      apparently  was using a version of BASIC which does not  have 
  54.      included  the  IF  THEN ...  ELSE IF  ...  ELSE  ...  END  IF 
  55.      structure, as belatedly I discovered that that is what he was 
  56.      doing throughout much of the FORECAST routine and  supporting 
  57.      subroutines.   I had however already embarked on a scheme  of 
  58.      duplicating his logic when I finally figured this out.  Since 
  59.      as  I  believe,  Phil was working with a BASIC  with  limited 
  60.      programming  structure,  the routine FORECAST  was  extremely 
  61.      difficult to translate into a more structured representation.  
  62.      I  finally  gave up the attempt and  essentially  copied  the 
  63.      logic  verbatim.   I  sincerely  hope  that  my  attempts  at 
  64.      reproducing  the  FORECAST module have not been  damaging  to 
  65.      it's functionality or it's performance.
  66.  
  67.           WEATHER.C  contains  the main routine  which  interfaces 
  68.      with  the User.   It also contains all of the supporting  I/O 
  69.      routines,  namely  PRINT and GET_STRING.   I wanted to  write 
  70.      this so that it could be as portable as possible.  Therefore, 
  71.      I  decided  to put all of the I/O routines  into  one  place, 
  72.      where they might easily be modified and  maintained,  leaving 
  73.      the forecasting,  wind chill calculating,  etc.  routines  in 
  74.      their  own  modules where only the  implementation  for  that 
  75.      module is contained.
  76.  
  77.           I wrote this source code on a VAX using VMS.  And then I 
  78.      downloaded  it to my 1040ST where I wrote the  Mark  Williams 
  79.      MAKEFILE  and then compiled it.   As it  is  currently,  this 
  80.      program  will compile,  link and run on either a VAX  running 
  81.      VMS or an Atari ST, without modifications.  (That's the whole 
  82.      idea of portability, isn't it?)
  83.  
  84.           There  are a few explanations in the code for those  who 
  85.      wish to modify it.   First of all,  I wanted to use the  ANSI 
  86.      standard for program development.   VAX C version 3.0, is not 
  87.      completely  ANSI  compliant (although Digital is  working  on 
  88.      it.)   Therefore  I  couldn't  use  the  ANSI  defined  macro 
  89.      "__STDC__".   When  I downloaded the file from the VAX to  my 
  90.      ST,  I  went through all of the C code and changed the VAX  C 
  91.      predefined macro "VMS" to "__STDC__".   However,  much to  my 
  92.      dismay,  Mark Williams C version 3.0,  which is **NOT**  ANSI 
  93.      compliant,  recognized the macro!!   Therefore,  in order  to 
  94.      make the program compile correctly,  I went back through  the 
  95.      code  and  substituted back the string "VMS" for  the  string 
  96.      "__STDC__".   Therefore,  if  you  have an ANSI  compliant  C 
  97.      compiler,  I  would  suggest that you substitute  the  string 
  98.      "__STDC__" for the string "VMS" throughout the C source code.  
  99.      There  is only one exception to this,  and that is  in  those 
  100.      places where I include files for the VAX C compiler.   I have 
  101.      included  header  files  from the  text  libraries  that  are 
  102.      available in VAX C,  since this speeds compilation.  In those 
  103.      instances,  I  suggest that you modify the #includes to  look 
  104.      something like this:
  105.  
  106.               #include stdio  ->  #include <stdio.h>
  107.  
  108.      Unless you plan on compiling this on a VAX, of course.
  109.  
  110.           There  is  one last item which needs  to  be  addressed.  
  111.      throughout many (if not most) of the modules,  I have used  a 
  112.      routine called uppercase().   However,  I did not include the 
  113.      source  code for this routine in the archive.   I  didn't  do 
  114.      that for a very simple reason:   uppercase() is one of  those 
  115.      routines that all beginning C programmers are likely to write 
  116.      when  first  learning C,  and so they may very  well  have  a 
  117.      version or two of it hanging around.  I didn't want to burden 
  118.      you  with yet another version.   uppercase() takes  a  single 
  119.      argument  which is a pointer of type char which points  to  a 
  120.      null terminated string.  As the name of the routine suggests, 
  121.      it  will turn all of the lower case letters in the string  to 
  122.      upper case and leave everything else untouched.   My  version 
  123.      of  uppercase()  also  returns  the  pointer  which  it   has 
  124.      uppercased.    I  **DO  NOT**  allocate  memory  for  another 
  125.      string!!   I do the upper casing activity in place and return 
  126.      the  pointer  which  was  passed  in,   so  that  I  can  use 
  127.      uppercase()  as  an  argument to  such  things  as  printf().  
  128.      (e.g.:     printf("You typed this %s\n", uppercase(response)) 
  129.      ).   Using ANSI standard function protocols,  uppercase()  is 
  130.      defined as follows:
  131.  
  132.                      char *uppercase(char *)  
  133.  
  134.      For good old traditional Kernighan & Ritchie ("classic  C"?), 
  135.      it would be:
  136.  
  137.                         char *uppercase()
  138.  
  139.           Now  for  the necessary stuff.   VAX,  VAX  C,  VMS  and 
  140.      DEC   are   registered  trademarks   of   Digital   Equipment 
  141.      Corporation,  headquartered in Maynard,  Massachusets.   IBM, 
  142.      IBM  PC are registered trademarks of  International  Business 
  143.      Machines.   Atari  and Atari ST are registered trademarks  of 
  144.      the Atari Corporation.
  145.  
  146.           Phil Baughn and myself are in no way responsible for any 
  147.      damage caused by this program.
  148.  
  149.           My address is:
  150.  
  151.                            Rod Falanga
  152.                    740 Stallion Road, Southeast
  153.                    Rio Rancho, New Mexico 87124
  154.  
  155.           I  am  on  GEnie and can be  reached  at  GEnie  mail-ID 
  156.      R.FALANGA1.
  157.  
  158.